package com.baidu.bridge.service.impl;

import com.baidu.bridge.api.AbApiService;
import com.baidu.bridge.dto.ab.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import retrofit2.Call;

import java.util.List;

@Service
@Slf4j
@RequiredArgsConstructor
public class AbDeptService extends  BaseService {

    private final AbApiService apiService;



    // ====================== 部门接口实现 ======================

    /**
     * 新增部门
     *
     * @param request 新增部门请求参数（名称、描述、父部门ID）
     * @return 新增的部门信息（包含部门ID）
     */
    public DepartmentTree addDepartment(AddDepartmentRequest request) {
        Call<CommonResponse<DepartmentTree>> call = apiService.addDepartment(request);
        return executeCall(call, "新增部门");
    }

    /**
     * 修改部门信息。
     *
     * @param request 修改部门请求参数（部门ID、名称、描述）
     * @return 修改结果（"编辑成功"）
     */
    public String updateDepartment(UpdateDepartmentRequest request) {
        Call<CommonResponse<String>> call = apiService.updateDepartment(request);
        return executeCall(call, "修改部门");
    }

    /**
     * 删除部门
     *
     * @param request 删除部门请求参数（部门ID）
     * @return 删除结果（"删除成功"）
     */
    public String deleteDepartment(DeleteDepartmentRequest request) {
        Call<CommonResponse<String>> call = apiService.deleteDepartment(request);
        return executeCall(call, "删除部门");
    }

    /**
     * 查询部门树结构
     *
     * @return 部门树列表（根节点为集团总部，包含子部门）
     */
    public List<DepartmentTree> queryDepartmentTree() {
        Call<CommonResponse<List<DepartmentTree>>> call = apiService.queryDepartmentTree();
        return executeCall(call, "查询部门树");
    }


}
